package org.keyroy.util;

import java.util.ArrayList;
import java.util.List;

public class KMap<T> {
	private KList<KList<T>> map = new KList<KList<T>>();

	public void clear() {
		map.clear();
	}

	public final void set(int x, int y, T element) {
		KList<T> list = map.get(x);
		if (list == null) {
			list = new KList<T>();
			map.set(x, list);
		}
		list.set(y, element);
	}

	public T remove(int x, int y) {
		KList<T> list = map.get(x);
		if (list == null) {
			list = new KList<T>();
			map.set(x, list);
		}
		T t = list.get(y);
		list.set(y, null);
		return t;
	}

	public T get(int x, int y) {
		KList<T> list = map.get(x);
		if (list != null) {
			return list.get(y);
		}
		return null;
	}

	public List<T> getList() {
		List<T> list = new ArrayList<T>();
		for (int i = 0; i < map.size(); i++) {
			KList<T> kList = map.get(i);
			if (kList != null) {
				List<T> ts = kList.getList();
				for (int j = 0; j < ts.size(); j++) {
					list.add(ts.get(j));
				}
			}
		}

		return list;
	}
}
